using System.Diagnostics;
using System.Text.RegularExpressions;
using cStudy09项目.Model;

namespace cStudy09项目;

class Program
{
    
    //鉴权 //  改造
    
    /// <summary>
    /// 验证码来源1
    /// </summary>
    const string CODE_SOURCE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    
    /// <summary>
    /// 验证码过期时间
    /// </summary>
    const int CODE_EXPIRATION_Time=60;
    
    /// <summary>
    /// 验证码长度
    /// </summary>
    private const int CODE_LENGTH = 4;
    
    //程序中 如果用到数字 一般都写常量
    private const int USER_INPUT_LENGTH = 5;


    //todo 动态扩容
    /// <summary>
    /// 数组的长度
    /// </summary>
    static int USER_COUNT = 2;
    
    // private string user1 = "admin1";
    // private string password1 = "xy123456";
    //
    // private string user2 = "admin2";
    // private string password2 = "xy123456";
    static User[] _users = new User[USER_COUNT];
    
    /// <summary>
    /// 用户ID
    /// </summary>
    private static int UserID = 1;
    
    
    /// <summary>
    /// 用户的数组下标
    /// </summary>
    static int UserIndexCount = 0;
    
    
    static void Main(string[] args)
    {

        //Console.WriteLine(  CreateCode());
        
        //string类型  -----》char[]
        //只读数组  只能读取不能修改
        //Console.WriteLine(CODE_SOURCE[1]);

        // Console.WriteLine(DateTime.Now);//获取当前时间
        // Console.WriteLine(DateTime.Now.Day);
        // Console.WriteLine(DateTime.Now.Year);
        // Console.WriteLine(DateTime.Now.Month);
        // Console.WriteLine(DateTime.Now.Hour);
        // Console.WriteLine(DateTime.Now.Second);
        // Console.WriteLine(DateTime.Now.Minute);
        // Console.WriteLine(DateTime.Now.AddDays(1));
       // Console.WriteLine(EncryPwd("123456"));
        
        InitUserInfo();
        LoginRegisterChose();
        
        
    }


    /// <summary>
    /// 初始化用户信息
    /// </summary>
    public static void InitUserInfo()
    {
        User user1 = new User(){Id = UserID++,UserName = "admin",Email = "3266303694@qq.com",Phone = "13446573331",PassWord = "sadasdassadadaasdasdsadasdaasadadaasdasdsadasdassadadaasdasdsadasdadsadadaasdasdsadasdajsadadaasdasdsadasdaisadadaasdasdsadasdaasadadaasdasdsadasdassadadaasdasdsadasdaisadadaasdasdsadasdadsadadaasdasdsadasdajsadadaasdasdsadasda1sadadaasdasdsadasda2sadadaasdasdsadasda3sadadaasdasdsadasda4sadadaasdasdsadasda5sadadaasdasdsadasda6sadadaasdasdsadasda@sadadaasdasdsadasda!sadadaasdasdsadasda#sadadaasdasdsadasda!sadadaasdasdsadasda!sadadaasdasdsadasda@sadadaasdasdsadasda#sadadaasdasdsadasda1sadadaasdasdsadasda2sadadaasdasdsadasda3sadadaasdasd",NickName = "信仰",CreateTime = DateTime.Now,UpdateTime = DateTime.Now};
        User user2 = new User(){Id = UserID++,UserName = "xingyang",Email = "326603693@qq.com",Phone = "13556573331",PassWord = "sadasdassadadaasdasdsadasdaasadadaasdasdsadasdassadadaasdasdsadasdadsadadaasdasdsadasdajsadadaasdasdsadasdaisadadaasdasdsadasdaasadadaasdasdsadasdassadadaasdasdsadasdaisadadaasdasdsadasdadsadadaasdasdsadasdajsadadaasdasdsadasda1sadadaasdasdsadasda2sadadaasdasdsadasda3sadadaasdasdsadasda4sadadaasdasdsadasda5sadadaasdasdsadasda6sadadaasdasdsadasda@sadadaasdasdsadasda!sadadaasdasdsadasda#sadadaasdasdsadasda!sadadaasdasdsadasda!sadadaasdasdsadasda@sadadaasdasdsadasda#sadadaasdasdsadasda1sadadaasdasdsadasda2sadadaasdasdsadasda3sadadaasdasd",NickName = "打工仔",CreateTime = DateTime.Now,UpdateTime = DateTime.Now};
        _users[0] = user1;
        UserIndexCount++;
        _users[1] = user1;
        UserIndexCount++;
    }
    
    
    /// <summary>
    /// 登入主持的选择
    /// </summary>
    public static void LoginRegisterChose()
    {
        //Console.BackgroundColor:控制台背景颜色
        newLoginOrRegister:
        Console.BackgroundColor = ConsoleColor.Cyan;
        Console.WriteLine("欢迎进入筑梦信仰后台管理系统");
        Console.WriteLine("请选择登入或者注册 按1----》登入,按2----》注册,按q---->退出");
        
        Console.BackgroundColor = ConsoleColor.White;
        
        //输入
        //1 2 q 随便输入
        string userLoginChose;
        while (true)
        {
            userLoginChose=Console.ReadLine();
            if (userLoginChose == "1")
            {
                //登入
                 // userLoginChose=  BeforeLogin();
                 // UserChoseLogin(userLoginChose);
                 
                 UserChoseLogin(BeforeLogin());
                 
                return;
            }
            else if (userLoginChose=="2")
            {
                //注册
                Register();
                goto newLoginOrRegister;
                return;
            }else if (userLoginChose=="q")
            {
                //退出
                Console.WriteLine("正在退出程序......");
                Thread.Sleep(2000); //让当前线程休眠2秒 睡眠时间以毫秒为单位
                Console.WriteLine("欢迎下次进入");
                return;
            }
            else
            {
                //重新选择
                Console.WriteLine("输入有误！！！，请重新选择");
                Console.WriteLine("请选择登入或者注册 按1----》登入,按2----》注册,按q---->退出");
            }
        }

    }




    //登入:
    //1.选择登入方式 ： 1.账号  2.邮箱  3. 手机号  4.瞎输
    //2，输入账号: 判断账号的长度是否合法  不能为空
    //2.1邮箱 或者 手机号 ： 判断输入的邮箱或者手机号是否合法
    //2.2 瞎输 重新输入
    //3.输入密码： 判断密码的长度   且   密码不能为空   加密(原生实现 md5 bcr)
    //4.发送验证码  输入验证码  验证码的过期时间  4位  数字+英文 且必须在 60 秒之内输入完成
    //4.1验证码过期重新生成验证码
    //4.2判断验证码是否正确
    //5.校验用户信息完成登入

    /// <summary>
    /// 登入之间要做的事情·1  ：-------》确保用户输入的一定是 1 2 3
    /// </summary>
    public static string BeforeLogin()
    {
        
        Console.WriteLine("请选择登入方式 1.账号登入 2.邮箱登入 3.手机号登入");
        string userChose = Console.ReadLine();
        while (true)
        {
            if (userChose=="1" || userChose=="2" || userChose=="3")
            {
                return userChose;
            }

            Console.WriteLine("输入有误！！！请重新选择");
            userChose = Console.ReadLine();
            // if (userChose is "1" or "2" or "3")
            // {
            // }
        }
        
        // if (userChose=="1")
        // {
        //     return userChose;
        // }else if (userChose == "2")
        // {
        //     return "2";
        // }else if (userChose=="3")
        // {
        //     return "3";
        // }else
        // {
        //     Console.WriteLine("输入有误！！！请重新选择");
        //     return BeforeLogin();
        // }

    }



    /// <summary>
        /// 用户登入选择
        /// </summary>
        /// <param name="userChose"></param>
    public static void UserChoseLogin(string userChose)
    {
        switch (userChose)
        {
            case "1":
                //账号登入
                UserNameLogin();
                break;
            case "2":
                //邮箱登入
                EmailLogin();
                break;
            case "3":
                //手机号登入
                PhoneLogin();
                break;
        }        
    }
    


    /// <summary>
    /// 账号登入
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    public static void UserNameLogin()
    {
        
        newLogin:
        User user = new User();
        
        //登入:
        //1.选择登入方式 ： 1.账号  2.邮箱  3. 手机号  4.瞎输
        //2，输入账号: 判断账号的长度是否合法  不能为空
        Console.WriteLine(" 请输入账号 ");
        user.UserName = Console.ReadLine();
        user.UserName  =    CheckUserInputLength(  user.UserName , "账号");

        //2.1邮箱 或者 手机号 ： 判断输入的邮箱或者手机号是否合法
        //2.2 瞎输 重新输入
        //3.输入密码： 判断密码的长度   且   密码不能为空   加密(原生实现 md5 bcr)
        Console.WriteLine("请输入密码");

        user.PassWord  = Console.ReadLine();
        user.PassWord  = CheckUserInputLength( user.PassWord , "密码", 4);
        //密码加密
        user.PassWord  =  EncryPwd(user.PassWord);
        
        //4.发送验证码  输入验证码  验证码的过期时间  4位  数字+英文 且必须在 60 秒之内输入完成
        newCode:
        Code systemCode=  CreateCode();
        
        nextCode:
        Console.WriteLine("请输入验证码:"+systemCode.OldCode);
        systemCode.UserInputCode = Console.ReadLine();

      bool IsTimeOut=  CheckCodeExpiration(systemCode);
      if (!IsTimeOut)
      {
          Console.WriteLine("验证码已经超时了，正在重新生成");
          Thread.Sleep(3000);
          goto newCode;
      }
      
        //4.1.1校验验证码
      bool isCode=  CheckCode(systemCode);
      if (!isCode)
      {
          Console.WriteLine("验证码输入错误，请重新输入");
          goto nextCode;
      }
        //4.1验证码过期重新生成验证码
        //4.2判断验证码是否正确
        Console.WriteLine("验证码校验成功");
        
        //5.校验用户信息完成登入

        for (int i = 0; i <=UserIndexCount; i++)
        {
            if (user.UserName==_users[i].UserName && user.PassWord==_users[i].PassWord)
            {
                Console.WriteLine("登入成功");
                Console.WriteLine($"欢迎{_users[i].NickName}进入管理系统");
                //todo 权限关系
                return;
            }
        }

        Console.WriteLine("账号或者密码错误了");
        Console.WriteLine("请重新输入");
        goto newLogin;
    }

    
    //如果用户想自定义长度
    /// <summary>
    /// 检查用户输入的长度
    /// </summary>
    /// <param name="str">要判断的变量</param>
    /// <param name="name">要判断的变量的名字是什么</param>
    /// <param name="length">你要判断的长度</param>
    /// <returns>合法的长度</returns>
    public static string CheckUserInputLength(string str, string name,int length)
    {
        while (true)
        {
            if (str!="" && str!=null &&str.Length>=length)
            {
                return str;
            }
        
            if (str==""|| str==null)
            {
                Console.WriteLine($"您输入的{name}为空,请重新输入");
            }
            else if (str.Length<length)
            {
                Console.WriteLine($"您输入的{name}长度小于{length}位,请重新输入");
            }
            str = Console.ReadLine();
        }
    }
    

    /// <summary>
    /// 检查用户输入的长度
    /// </summary>
    /// <param name="str">要判断的变量</param>
    /// <param name="name">要判断的变量的名字是什么</param>
    /// <returns>合法的长度</returns>
    public static string CheckUserInputLength(string str,string name)
    {
      return   CheckUserInputLength(str,name,USER_INPUT_LENGTH);
    }



    /// <summary>
    /// 生成验证码
    /// </summary>
    /// <returns>验证码</returns>
    public static Code CreateCode()
    {
        //todo 验证码过期时间
        //code: 带空格的验证码  不带空格的验证码   过期时间
        // string code = null;
        Code code=new Code();
        Random r = new Random();
        for (int i = 0; i < CODE_LENGTH; i++)
        {
            int number=    r.Next(CODE_SOURCE.Length);
            code.OldCode+=CODE_SOURCE[number]+" ";
            code.NewCode+=CODE_SOURCE[number];
        }
        
        //过期时间
        //23:16   
        //21：15+1   22:15
        code.Expiration=DateTime.Now.AddSeconds(CODE_EXPIRATION_Time);
        
        return code;
    }


    /// <summary>
    /// 校验验证码
    /// </summary>
    /// <param name="userCode">用户输入的验证码</param>
    /// <param name="systemCode">系统验证码</param>
    /// <returns>验证码是否正确</returns>
    public static bool CheckCode(Code systemCode)
    {
        //验证码输入错误
        if (systemCode.UserInputCode==""||systemCode.UserInputCode==null|| systemCode.UserInputCode.Length<4)
        {
            return false;
        }
        
        //user：abcd
        //系统: ABCD
        //无论用户输入的是大写还是小写都可以校验成功
        //ToUpper():把字符串转换成大写
        // if (userCode.ToUpper()==systemCode.ToUpper())
        // {
        //     return true;
        // }
        // return false;
        
        return systemCode.UserInputCode.ToUpper()==systemCode.NewCode.ToUpper();

    }

    
    /// <summary>
    /// 校验验证码的过期时间
    /// </summary>
    /// <returns></returns>
    public static bool CheckCodeExpiration(Code code)
    {
        if (code.Expiration>DateTime.Now)
        {
            return true;
        }
        return false;
    }
    
    
    //密码加密:
    //不使用第三方包
    //md5 加密 不可逆的加密  hash算法进行加密  加密完成后不能加密 123456 asdjiasdjio
    //对称加密:
    //非对称加密:
    /// <summary>
    /// 加密密码
    /// </summary>
    /// <param name="pwd">密码</param>
    /// <returns>加密后的密码</returns>
    // public static string EncryPwd(string pwd)
    // {
    //     //加盐：防止用户的密码太简单 容易被破解掉
    //     string salt="asdasd";
    //     string newPwd = null;
    //     for (int i = 0; i < pwd.Length; i++)
    //     {
    //         newPwd +="dddsadasd"+pwd[i] + "aaasadasdsad";
    //     }
    //
    //     return newPwd;
    // }
    
    /// <summary>
    /// 对密码进行加密
    /// </summary>
    /// <param name="pwd">密码</param>
    /// <returns>加密</returns>
    public static string EncryPwd(string pwd)
    {
        //加盐  123456 对用户的密码进行复杂化
        pwd = "sasdjiasidj" + pwd + "@!#!!@#123";
        string newPwd = null;

        for (int i = 0; i < pwd.Length; i++)
        {
            newPwd+=   "sadasda"+pwd[i]+ "sadadaasdasd";
        }

        return newPwd;
    }
    
    
    /// <summary>
    /// 邮箱登入
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    public static void EmailLogin()
    {
        newLogin:
        User user = new User();
        
        //登入:
        //1.选择登入方式 ： 1.账号  2.邮箱  3. 手机号  4.瞎输
        //2，输入账号: 判断账号的长度是否合法  不能为空
        Console.WriteLine(" 请输入邮箱 ");
        user.Email = Console.ReadLine();
        user.Email  =    CheckUserInputLength(  user.Email , "账号");

        //校验邮箱是否合法
        //正则表达式
       // bool isEmail = IsEmail(user.Email);

        while (!IsEmail(user.Email))
        {
            Console.WriteLine("你输入的邮箱有误,请重新输入邮箱");
            user.Email = Console.ReadLine();
        }
        
        LoginAfter(ref user);
       
        //5.校验用户信息完成登入

        for (int i = 0; i <=UserIndexCount; i++)
        {
            if (user.Email==_users[i].Email && user.PassWord==_users[i].PassWord)
            {
                Console.WriteLine("登入成功");
                Console.WriteLine($"欢迎{_users[i].NickName}进入管理系统");
                //todo 权限关系
                return;
            }
        }

        Console.WriteLine("邮箱或者密码错误了");
        Console.WriteLine("请重新输入");
        goto newLogin;
    }
    
    /// <summary>
    /// 判断是否是合法的邮箱
    /// </summary>
    /// <param name="userEmail">邮箱</param>
    /// <returns>合法的邮箱</returns>
    public static bool IsEmail(string userEmail)
    {
        //使用正则表达式判断邮箱
        //172893789 @ 32432.com
        // 使用正则表达式检查邮箱格式
        //"^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+
        string pattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";
        return Regex.IsMatch(userEmail, pattern);
    }


    /// <summary>
    /// 输入密码和验证码逻辑
    /// </summary>
    /// <param name="user"></param>
    public static void LoginAfter(ref User user)
    {
        //2.1邮箱 或者 手机号 ： 判断输入的邮箱或者手机号是否合法
        //2.2 瞎输 重新输入
        //3.输入密码： 判断密码的长度   且   密码不能为空   加密(原生实现 md5 bcr)
        Console.WriteLine("请输入密码");
        user.PassWord  = Console.ReadLine();
        user.PassWord  = CheckUserInputLength( user.PassWord , "密码", 4);
        //密码加密
        user.PassWord  =  EncryPwd(user.PassWord);
        
        //4.发送验证码  输入验证码  验证码的过期时间  4位  数字+英文 且必须在 60 秒之内输入完成
        newCode:
        Code systemCode=  CreateCode();
        
        nextCode:
        Console.WriteLine("请输入验证码:"+systemCode.OldCode);
        systemCode.UserInputCode = Console.ReadLine();

        bool IsTimeOut=  CheckCodeExpiration(systemCode);
        if (!IsTimeOut)
        {
            Console.WriteLine("验证码已经超时了，正在重新生成");
            Thread.Sleep(3000);
            goto newCode;
        }
      
        //4.1.1校验验证码
        bool isCode=  CheckCode(systemCode);
        if (!isCode)
        {
            Console.WriteLine("验证码输入错误，请重新输入");
            goto nextCode;
        }
        //4.1验证码过期重新生成验证码
        //4.2判断验证码是否正确
        Console.WriteLine("验证码校验成功");

    }
    
    /// <summary>
    /// 手机号登入
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    public static void PhoneLogin()
    {
        newLogin:
        User user = new User();
        
        //登入:
        //1.选择登入方式 ： 1.账号  2.邮箱  3. 手机号  4.瞎输
        //2，输入账号: 判断账号的长度是否合法  不能为空
        Console.WriteLine(" 请输入手机号 ");
        user.Phone = Console.ReadLine();
        user.Phone  =    CheckUserInputLength(  user.Phone , "手机号");

        //校验邮箱是否合法
        //正则表达式
        // bool isEmail = IsEmail(user.Email);

        while (!IsPhone(user.Phone))
        {
            Console.WriteLine("你输入的手机号有误,请重新输入手机号");
            user.Phone = Console.ReadLine();
        }
        
        LoginAfter(ref user);
       
        //5.校验用户信息完成登入

        for (int i = 0; i <=UserIndexCount; i++)
        {
            if (user.Phone==_users[i].Phone && user.PassWord==_users[i].PassWord)
            {
                Console.WriteLine("登入成功");
                Console.WriteLine($"欢迎{_users[i].NickName}进入管理系统");
                //todo 权限关系
                return;
            }
        }

        Console.WriteLine("邮箱或者密码错误了");
        Console.WriteLine("请重新输入");
        goto newLogin;
    }
    
    /// <summary>
    /// 判断用户输入的是不是手机
    /// </summary>
    /// <param name="userPhone"></param>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    private static bool IsPhone(string userPhone)
    {
        //1 3-9 9
        // 使用正则表达式检查邮箱格式
        //1 3-9 9
        string pattern = @"^1[3-9]\d{9}$";;
        return  Regex.IsMatch(userPhone, pattern);
    }

    
    /// <summary>
    /// 用户注册
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    public static void Register()
    {
        
        EnsureCapacity(USER_COUNT + 1);
        
        User user = new User();
        user.Id = UserID++;
        user.CreateTime = DateTime.Now;
        user.UpdateTime = DateTime.Now;

        Console.WriteLine("请输入匿名");
        user.NickName = Console.ReadLine();
        CheckUserInputLength(user.NickName, "匿名", 1);


        //1.输入用户名字
        //判断用户名是否合法
        //判断用户吗是否存在
        Console.WriteLine("请输入用户名");
        user.UserName = Console.ReadLine();
        user.UserName = CheckUserRepeact(user);
       user.UserName = CheckUserInputLength(user.UserName, "用户名");
   
       
       //2.输入密码
       //判断密码长度是否合法
       //密码加密
       Console.WriteLine("请输入密码");
       user.PassWord = CheckUserInputLength(Console.ReadLine(), "密码", 4);
       user.PassWord = EncryPwd(user.PassWord);

       //3,邮箱
       //判断邮箱是否合法
       //发送一个邮箱验证码
       //判断验证码
       Console.WriteLine("请输入邮箱");
       user.Email = Console.ReadLine();
       user.Email = CheckEmailRepeact(user);
       user.Email = CheckUserInputLength(user.Email, "邮箱");
       while (!IsEmail(user.Email))
       {
           Console.WriteLine("你输入邮箱有误请重新输入邮箱");
           user.Email = Console.ReadLine();
       }


      // 原则字符串  net7 语法  """  """
      Console.WriteLine("正在发送邮箱验证码");
      
      Thread.Sleep(3000);//睡眠3秒钟
      sendPhoneAndEmailCode(user);


       //4.手机号
       //判断手机盒是否合法
       //发送一个手机验证码
       Console.WriteLine("请输入手机号");
       user.Phone = Console.ReadLine();
       user.Phone =  CheckPhoneRepeact(user);
       user.Phone = CheckUserInputLength(user.Phone, "手机号");
       while (!IsPhone(user.Phone))
       {
           Console.WriteLine("你输入手机号有误请重新输入手机号");
           user.Phone = Console.ReadLine();
       }


       // 原则字符串  net7 语法  """  """
       Console.WriteLine("正在发送手机号验证码");
      
       Thread.Sleep(3000);//睡眠3秒钟
       sendPhoneAndEmailCode(user);


       _users[UserIndexCount] = user;
       UserIndexCount++;

       Console.WriteLine("注册成功");
       

    }

    /// <summary>
    /// 发送手机号或者邮箱验证码
    /// </summary>
    /// <param name="user"></param>
    /// <exception cref="NotImplementedException"></exception>
    private static void sendPhoneAndEmailCode(User user)
    {
        newCode:
        Code SystemCode = CreateCode();
        nextCode:
        Console.WriteLine($"""
                           尊敬的{user.NickName}:
                                欢迎来到筑梦信仰后台管理系统请输入的验证码: {SystemCode.OldCode}
                                                                    注册时间为{DateTime.Now}
                           """);
        SystemCode.UserInputCode = Console.ReadLine();
        bool isOut=   CheckCodeExpiration(SystemCode);
        if (!isOut)
        {
            Console.WriteLine("验证码输入超时间了，正常重新生成");
            Thread.Sleep(3000);
            goto newCode;
        }

        bool isTrue=  CheckCode(SystemCode);
        if (!isTrue)
        {
            Console.WriteLine("验证码输入错误，请重新输入验证码");
            goto nextCode;
        }

    }

    /// <summary>
    /// 检查用户是否重复
    /// </summary>
    public static bool CheckRepeat(User user )
    {
        for (int i = 0; i < UserIndexCount; i++)
        {
            if (_users[i].UserName==user.UserName || _users[i].Email==user.Email || _users[i].Phone==user.Phone)
            {
                return false;
            }
        }
        return true;
        // bool isHave = false;
        // while (true)
        // { 
        //     for (int i = 0; i < UserIndexCount; i++)
        //     {
        //
        //         if (_users[i].UserName==UserName  )
        //         {
        //             Console.WriteLine("用户名字已经存在,请查询输入");
        //             isHave = true;
        //             UserName = Console.ReadLine();
        //         }
        //     }
        //
        //     if (!isHave)
        //     {
        //         return UserName;         
        //     }
        // }
    }

    /// <summary>
    /// 检查用户是否重复
    /// </summary>
    public static string CheckUserRepeact(User user)
    {

        while ( ! CheckRepeat( user))
        {
            user.UserName = CheckUserInputLength(user.UserName, "用户名");
            Console.WriteLine("账号重复了,请重新输入");
            user.UserName = Console.ReadLine();
        }
        return user.UserName;
    }
    
    /// <summary>
    /// 检查邮箱是否重复
    /// </summary>
    public static string CheckEmailRepeact(User user)
    {

        while ( ! CheckRepeat( user))
        {
            user.Email = CheckUserInputLength(user.Email, "邮箱");
            Console.WriteLine("邮箱重复了,请重新输入");
            user.Email = Console.ReadLine();
        }
        return user.Email;
    }
    
        
    /// <summary>
    /// 检查手机号是否重复
    /// </summary>
    public static string CheckPhoneRepeact(User user)
    {

        while ( ! CheckRepeat( user))
        {
            user.Phone = CheckUserInputLength(user.Phone, "手机号");
            Console.WriteLine("手机号重复了,请重新输入");
            user.Phone = Console.ReadLine();
        }
        return user.Phone;
    }

    /// <summary>
    /// 容量是否足够
    /// </summary>
    /// <param name="min"></param>
    public static void EnsureCapacity(int min)
    {
        if (_users.Length >= min)
        {
            return;
        }
        else
        {
         //容量不够扩容
         USER_COUNT = USER_COUNT * 2;
         Console.WriteLine("动态扩容后:"+USER_COUNT);
         User[] users1 = new User[USER_COUNT];
         for (int i = 0; i < _users.Length; i++)
         {
             users1[i] = _users[i];
         }
         _users = users1;
        }
    }

}